Ciao a tutti,
mi chiamo Riccardo e mi sto esercitando per l'esame orale di calcolatori elettronici. Ho provato a realizzare un programmino in assembly che calcola la media di numeri che inserisco da tastiera. Ovviamente la media può essere un numero con la virgola. In questo punto mi incaglio, nel senso che non riesco a gestire il numero in virgola mobile. Ho provato utilizzando i registri riservati ai numeri in virgola mobile ma niente. In pratica non riesco a stampare su console la media se il risultato è un numero con la virgola. Posto il codice:
.data
consegna1: .asciiz "Ciao Riccardo, quanti numeri vuoi inserire? "
a_capo: .asciiz "\n"
consegna2: .asciiz "Inserisci un numero: "
risposta: .asciiz "La media è: \n"
error: .asciiz "Errore! Chiusura programma.\n"
.text
li $t2, 0 # inizializzo la somma nel reg $t2
li $t0, 0 # inizializzo il contatore nel reg $t0
li $v0, 4
la $a0, consegna1
syscall
li $v0, 4
la $a0, a_capo
syscall
li $v0, 5
syscall
move $t1, $v0 # in $t1 ho il numero di numeri
beq $t1, 0, errore
inserisci_numero:
beq $t0, $t1, calcolo_media
li $v0, 4
la $a0, consegna2
syscall
li $v0, 5
syscall
add $t2, $t2, $v0
addi $t0, $t0, 1
j inserisci_numero
calcolo_media:
div $t3, $t2, $t1
mtc1 $t3, $f1
li $v0, 4
la $a0, risposta
syscall
li $v0, 2
add.s $f12, $f1, $zero
syscall
li $v0, 10
syscall
errore:
li $v0, 4
la $a0, error
syscall
li $v0, 10
syscall
Mi scuso ma non mi fa utilizzare il tag
Ultima modifica effettuata da Ricowolf il 10/03/2015 alle 17:05 |